package dominio;

public class Fantasma extends FantasmaStateMachine implements IMovible {
	private Nodo nodoActual;
	private Pacman pacman;
	private Boolean comioPastilla;
	private Vivacidad vivacidad;
	private Integer contador = 0;


	public Integer getContador() {
		return contador;
	}

	public void aumentarContador() {
		this.contador++;
	}
	
	public void reiniciarContador() {
		this.contador = 0;
	}

	private Sentido sentidoMovimiento;
	
	public Fantasma(Pacman pacman, Vivacidad vivacidad) {
		comioPastilla = false;
		nodoActual = Juego.getInstance().getLaberinto().getNodoInicialFantasmas();
		
		this.pacman = pacman;
		this.sentidoMovimiento = Sentido.DERECHA;
		setEstadoActual(new EstadoCazador());
		this.vivacidad = vivacidad;
	}
	
	public Vivacidad getVivacidad() {
		return vivacidad;
	}

	public void setVivacidad(Vivacidad vivacidad) {
		this.vivacidad = vivacidad;
	}
	
	public void molestar() {
		getEstadoActual().molestar();
	}
	
	public void colisionar() {
		getEstadoActual().colisionar(this, pacman);
	}
	
	public void mover() {
		getEstadoActual().moverFantasma(this, getPacman());
	}

	public Pacman getPacman() {
		return pacman;
	}

	public void setPacman(Pacman pacman) {
		this.pacman = pacman;
	}

	public Integer getAgresividad() {
		return getEstadoActual().getAgresividad();
	}

	public Posicion getPosicion() {
		return this.nodoActual.getPosicion();
	}

	@Override
	public void siguienteEstado() {
		getEstadoActual().siguienteEstado(this);		
	}

	public Boolean getComioPastilla() {
		return comioPastilla;
	}

	public void setComioPastilla(Boolean comioPastilla) {
		this.comioPastilla = comioPastilla;
	}
	
	@Override
	public Sentido getSentidoMovimiento() {
		return sentidoMovimiento;
	}

	@Override
	public void setSentidoMovimiento(Sentido sentidoMovimiento) {
		this.sentidoMovimiento = sentidoMovimiento;
	}

	@Override
	public Nodo getNodoActual() {
		return this.nodoActual;
	}

	@Override
	public void setNodoActual(Nodo nuevoNodoActual) {
		this.nodoActual = nuevoNodoActual;
	}

}
